package com.ohc.leetcode.数组;

import java.util.*;

/**
 * 2022年5月11日15:12:34
 * <p>
 * 把字符串s和t合并，然后遍历合并的每个字符，判断集合set中是否有这个字符，如果有就移除，否则就加入到集合set中。最后集合set中只有一个字符，这个字符就是我们要求的。
 * <p>
 * <p>
 * public char findTheDifference(String s, String t) {
 * Set<Character> set = new HashSet<>();
 * char[] charArr = s.concat(t).toCharArray();
 * for (int i = 0; i < charArr.length; i++) {
 * if (set.contains(charArr[i]))
 * set.remove(charArr[i]);
 * else
 * set.add(charArr[i]); a b c  a  b  c d
 * }
 * return (char) set.toArray()[0];
 * }
 * <p>
 * 作者：sdwwld
 * 链接：https://leetcode.cn/problems/find-the-difference/solution/5chong-jie-jue-fang-shi-zui-hao-liao-ji-dgpbm/
 * 来源：力扣（LeetCode）
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 */
public class 找不同389 {
    //    ”a“  "b"  思路借鉴      2022年5月11日19:16:49
    public static char findTheDifference1(String s, String t) {
        int[] arr = new int[26]; // 默认是0
        char[] chars = s.toCharArray();
        for (char c : chars) { // 进行字母 数量的统计
            arr[c - 'a']++;
        }
        char[] c2 = t.toCharArray();
        for (char c : c2) {
            arr[c - 'a']--;
            if (arr[c - 'a'] < 0) {
                return c;
            }
        }

        return 0;
    }

    /**
     * abc  abcd  思路2  2022年5月11日19:21:02
     *
     * @param s
     * @param t
     * @return
     */
    public static char findTheDifference2(String s, String t) {
        String concat = s.concat(t);
        char[] chars = concat.toCharArray();
        Set<Character> set = new HashSet<>();
        for (char c : chars) {
            if (!set.contains(c)) {
                set.add(c);
            } else {
                set.remove(c);
            }
        }


        return ((char) set.toArray()[0]);

    }


    public static void main(String[] args) {
        char c = findTheDifference1("b", "bq");
        System.out.println("c = " + c);
    }
}
